package com.ruoyi.system.mc.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mc.entity.BaseMsgEnum;
import com.ruoyi.system.mc.entity.McProductDetailed;
import com.ruoyi.system.mc.entity.R;
import com.ruoyi.system.mc.mapper.McProductDetailedMapper;
import com.ruoyi.system.mc.service.McProductDetailedService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/*
 *  @author 雨安
 *  类名： McProductDetailedImpl
 *  创建时间：2024/5/25
 */
@Service
public class McProductDetailedImpl extends ServiceImpl<McProductDetailedMapper, McProductDetailed> implements McProductDetailedService {

    //商品详情表
    @Resource
    private McProductDetailedService mcProductDetailedService;

    /**
     * 查询商品详细数据
     * @param mcProductDetailed 查询条件参数 此处必须前端要传递ID参数否则认为错误
     * @return 返回结果集
     */
    @Override
    public R<McProductDetailed> getProductDetailed(McProductDetailed mcProductDetailed) {
        //判断是否传递了ID
        if (mcProductDetailed.getProductId() == null){
            //返回空数据
            return null;
        }
        //页码
        Integer current = 0;
        //行数
        Integer size = 0;
        /**
         * 分页插件暂时没研究明白配置弄在哪
         */
        if (mcProductDetailed.getCurrentPage()!=0){
            //页码赋值
            current = (mcProductDetailed.getCurrentPage()-1)*mcProductDetailed.getPageSize();
            //总行数赋值
            size = mcProductDetailed.getPageSize();
        }
        //查询所有数据
        List<McProductDetailed> mcProductDetailedList = mcProductDetailedService.list(mcProductDetailed.getLambdaQueryWrapper(mcProductDetailed).last("limit " + current + "," +size ));
        //查询总行数
        Long total = mcProductDetailedService.count(mcProductDetailed.getLambdaQueryWrapper(mcProductDetailed));
        //返回统一返回格式类型
        return new R<>("查询成功",200,mcProductDetailedList,total,current,size);
    }


    /**
     * 商品详情删除接口
     * @param productDetailId 删除的主键ID
     * @return 返回删除结果
     */
    @Override
    public String deleteProductDetailById(Long productDetailId) {
        //判断是不是 null
        if (productDetailId != null && productDetailId != 0){
            //调用修改语句 进行逻辑删除
            Boolean update = mcProductDetailedService.update(new UpdateWrapper<McProductDetailed>()
                    //通过ID进行逻辑删除
                    .lambda().eq(McProductDetailed::getDetailedId, productDetailId)
                    //设置逻辑删除为 真
                    .set(McProductDetailed::getDeleteFlag, Boolean.TRUE)
            );
            //判断是否修改成功
            return update == true ? BaseMsgEnum.SUCCESS.getGetMsg() : BaseMsgEnum.ERROR.getGetMsg();
        }else{
            //返回失败提示
            return BaseMsgEnum.ERROR.getGetMsg();
        }
    }

    /**
     * 商品详情修改方法
     * @param mcProductDetailed 商品详情修改对象
     * @return 返回修改结果字符串
     */
    @Override
    public String updateProductDetailById(McProductDetailed mcProductDetailed) {
        //判断修改对象不为null
        if (Objects.nonNull(mcProductDetailed)){
            //执行修改操作
            Boolean update = mcProductDetailedService.updateById(mcProductDetailed);
            //返回提示字符串
            return update == true ? BaseMsgEnum.SUCCESS.getGetMsg() : BaseMsgEnum.ERROR.getGetMsg();
        }else{
            //返回提示结果字符串
            return BaseMsgEnum.ERROR.getGetMsg();
        }
    }


    /**
     * 商品详情方法
     * @param mcProductDetailed 添加数据对象
     * @return 返回添加结果字符串
     */
    @Override
    public String insertProductDetail(McProductDetailed mcProductDetailed) {
        if (Objects.nonNull(mcProductDetailed)){
            //创建日期格式转换对象
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //设置默认值
            mcProductDetailed.setCreateBy(SecurityUtils.getUsername());
            mcProductDetailed.setCreateTime(java.sql.Date.valueOf(sdf.format(new Date())));
            mcProductDetailed.setUpdateBy(SecurityUtils.getUsername());
            mcProductDetailed.setUpdateTime(java.sql.Date.valueOf(sdf.format(new Date())));
            mcProductDetailed.setDeleteFlag(Boolean.FALSE);
            //执行添加
            Boolean save = mcProductDetailedService.save(mcProductDetailed);
            //返回条件字符串
            return save == true ? BaseMsgEnum.SUCCESS.getGetMsg() : BaseMsgEnum.ERROR.getGetMsg();
        }else{
            //返回失败提示
            return BaseMsgEnum.ERROR.getGetMsg();
        }

    }


}
